1 package tw.com.javaworld.CH17;
2
3 import java.io.*;
4 import java.util.*;
5 import javax.xml.parsers.*;
6 import org.xml.sax.*;
7 import org.xml.sax.helpers.*;
8
9 public class MyHandler extends DefaultHandler {
10
11 private StringBuffer textBuffer;
12 private HashMap hm_TagData;
13 private String tagName;
14
15 public MyHandler(HashMap hm_TagData) {
16 this.hm_TagData = hm_TagData;
17 }
18
19 public void characters(char[] ch, int start, int len) {
21 String s = new String(ch, start, len);
22 if (textBuffer == null) {
23 textBuffer = new StringBuffer(s);
24 } else {
25 textBuffer.append(s);
26 }
27 }
28 public void startElement(String namespaceURI, String localName, String qName, Attributes atts) {
29
30 int count = 1;
32 echoText();
33 if (atts != null) {
34 for (int i = 0; i < atts.getLength(); i++) {
35 String aName = atts.getLocalName(i);
37 if ("".equals(aName))
38 aName = atts.getQName(i);
39 while (hm_TagData.get(aName) != null) {
40 aName = aName + count;
41 count++;
42 }
43 hm_TagData.put(aName, atts.getValue(i));
44 }
45 }
46 }
47 public void endElement(String namespaceURI, String localName, String qName) {
48 String eName = localName;
49 if ("".equals(eName))
51 eName = qName;
52 int count = 1;
54 while (hm_TagData.get(eName) != null) {
55 eName = eName + count;
56 count++;
57 }
58 hm_TagData.put(eName, textBuffer);
59 echoText();
60 }
61 private void echoText() {
62 if (textBuffer == null)
63 return;
64 String s = "" + textBuffer;
65 textBuffer = null;
66 }
67
68}
69